#ifndef FRAKOUTCURRENTVERSION_H
#define FRAKOUTCURRENTVERSION_H

class FrakOutVersion;

/**
  * A singleton class that contains the current version information for FrakOut!
  */
class FrakOutCurrentVersion
{
public:

    /**
     * Returns the singleton instance.
     * @return A pointer to the current version.
     */
    static FrakOutCurrentVersion* instance();

    /**
     * Sets the current version of FrakOut!.
     * @param version A FrakOut! version object.
     */
    void setVersion(const FrakOutVersion* const version);

    const FrakOutVersion* const version() const;

private:

    /**
     * Prevent construction.
     */
    FrakOutCurrentVersion();

    /**
     * Prevent copy construction.
     */
    FrakOutCurrentVersion(const FrakOutCurrentVersion&);

    /**
     * Prevent assignment.
     */
    FrakOutCurrentVersion& operator=(const FrakOutCurrentVersion&);

private:

    /**
     * A pointer to the object containing the current version.
     */
    const FrakOutVersion* m_current;
};

#endif // FRAKOUTCURRENTVERSION_H
